#pragma once
#include "VC_Drawable.h"
#include "C_Map.h"

class VC_Object :
	public VC_Drawable
{
protected:
	S_Pointi	m_spacePos;	//space position on A.C.
	S_Pointi16	m_pos;			//rect position
	C_Map*		m_map;

	S_Pointf	m_absolutePos;
public:
	VC_Object(C_Map* map);
	virtual ~VC_Object();

	////////////////////////////////////////////////////////////////////////////
	//////////////////////		ABSOLUTE
	inline S_Pointf	absolutePos() { return m_absolutePos; }

	////////////////////////////////////////////////////////////////////////////
	//////////////////////		SPACE POSITION
	inline void		setSpacePos(INT64 x, INT64 y) { m_spacePos.x = x; m_spacePos.y = y; }
	inline S_Pointi	spacePos()					  { return m_spacePos; }

	////////////////////////////////////////////////////////////////////////////
	//////////////////////		RECT POSITION
	inline void			setPos(INT16 x, INT16 y)	{ m_pos.x = x; m_pos.y = y; }
	inline S_Pointi16	pos()						{ return m_pos; }

	C_Map*	map() { return m_map; }


	////////////////////////////////////////////////////////////////////////////
	//////////////////////		MAIN FUNCTIONS
	virtual void render();
	virtual void update();

	virtual void renderObject();
};

